package Modelo;

import java.util.Collection;
import java.util.Iterator;

public class NaveEspacialLlegada implements Bloque {

	/*           ATRIBUTOS     */
	Alojador unAlojadorPersonaje;
	boolean esFirme;
	Mapa mapa;
	
	/*      CONSTRUCTOR         */
	public  NaveEspacialLlegada(Mapa mapa){
		this.esFirme = false;
		this.unAlojadorPersonaje = new AlojadorPersonaje();
		this.mapa=mapa;
	}

	/*         COMPORTAMIENTOS */
	
	public String toString(){
		return new String("L");
	}
	
	/**
	 * Aloja un Personaje
	 * @param Personaje 
	 * */
	@SuppressWarnings("deprecation")
	public void alojar(Personaje unPersonaje) {
		this.unAlojadorPersonaje.alojar(unPersonaje);
//		if(unPersonaje instanceof Thread)
//			((Thread)unPersonaje).stop();
		if(unPersonaje instanceof Pooglin)
			((Pooglin) unPersonaje).detener();
	}

	/**
	 * Remueve un Personaje
	 * @param Personaje esta entidad va a ser removido de este contenedor
	 * */
	public void desalojar(Personaje unPersonaje) {
	}

	/**
	 * Indica si es firme como para pisarla, osea si es pisable.
	 * @return boolean 
	 * */
	public boolean esFirme() {
		return this.esFirme;
	}

	/**
	 * Indica si el Personaje esta contenido en esta nave
	 * @param unTranseunte 
	 * @return Boolean
	 * @see Personaje
	 * */
	public boolean estaAlojado(Personaje unPersonaje) {
		return this.unAlojadorPersonaje.estaAlojado(unPersonaje);
	}

	public void destruir(){
		Collection<Personaje> aMatar= unAlojadorPersonaje.getAlojados();
		Iterator<Personaje> it= aMatar.iterator();
		while(it.hasNext())
			it.next().morir();
		mapa.ModificarBloquePor(this, new Vacio(mapa));
	}
	
	public Numeros velocidadFinal(Numeros velocidad){
		return new Real(Constantes.velocidad);
	}

	public Collection<Personaje> getAlojados() {
		return unAlojadorPersonaje.getAlojados();
	}

	public void atacar(Numeros potenciaDelAtaque) {
		// TODO Auto-generated method stub
		
	}
}